Big Data and Analytics Time Series Data Aggregation এবং Analysis গাইড ও নোট

515

Time Series Data হলো এমন ডেটা, যেখানে প্রতিটি ডেটা পয়েন্টের একটি টাইমস্ট্যাম্প থাকে এবং এই ডেটাগুলি সময়ের সাথে পরিবর্তিত হয়। Time Series Data বিশ্লেষণ বিভিন্ন ক্ষেত্রে ব্যবহৃত হয়, যেমন স্টক মার্কেটের দাম, আবহাওয়ার পূর্বাভাস, IoT ডিভাইসের ডেটা ইত্যাদি। Spark SQL-এর মাধ্যমে Time Series Data-এর উপর Aggregation এবং Analysis করতে অনেক সহজ এবং দক্ষ।

চলুন, Spark SQL এর সাহায্যে Time Series Data এর উপর Aggregation এবং Analysis কিভাবে করা যায় তা বিস্তারিতভাবে দেখি।


Time Series Data Aggregation in Spark SQL

Time Series Data এর Aggregation সাধারণত সময়ের উপর ভিত্তি করে ডেটাকে গ্রুপ করা এবং কিছু পরিসংখ্যান বের করা হয়, যেমন গড় (mean), সর্বোচ্চ (max), সর্বনিম্ন (min), গড় পরিসংখ্যান (average) ইত্যাদি। Spark SQL DataFrame API এবং SQL কোয়ারি ব্যবহার করে সহজেই Time Series Data তে Aggregation করা যায়।

Time Series Data Aggregation এর উদাহরণ:

ধরা যাক, আমাদের কাছে একটি sales_data নামে ডেটাসেট রয়েছে, যেখানে বিক্রয়ের তথ্য এবং তার সাথে বিক্রির তারিখ দেওয়া আছে।

from pyspark.sql import SparkSession
from pyspark.sql.functions import col, avg, max, min, to_date

# SparkSession তৈরি
spark = SparkSession.builder.appName("Time Series Aggregation").getOrCreate()

# Sample Time Series Data
data = [("2024-01-01", 100),
        ("2024-01-01", 150),
        ("2024-01-02", 200),
        ("2024-01-02", 250),
        ("2024-01-03", 300)]

columns = ["date", "sales"]

# DataFrame তৈরি
df = spark.createDataFrame(data, columns)

# টাইমস্ট্যাম্প ফরম্যাটে ডেটা কনভার্ট করা
df = df.withColumn("date", to_date(col("date"), "yyyy-MM-dd"))

# Date অনুযায়ী Aggregation করা (যেমন: গড়, সর্বোচ্চ, সর্বনিম্ন বিক্রি)
aggregated_df = df.groupBy("date").agg(
    avg("sales").alias("average_sales"),
    max("sales").alias("max_sales"),
    min("sales").alias("min_sales")
)

# ফলাফল দেখানো
aggregated_df.show()

এই উদাহরণে, আমরা sales_data ডেটাসেটকে date অনুযায়ী গ্রুপ করে, তারপরে average, max, এবং min বিক্রয় বের করেছি। এর মাধ্যমে Time Series Data এর বিভিন্ন পরিসংখ্যান বের করা হয়েছে।

ফলাফল:

+----------+------------+---------+---------+
|      date|average_sales|max_sales|min_sales|
+----------+------------+---------+---------+
|2024-01-01|       125.0|       150|       100|
|2024-01-02|       225.0|       250|       200|
|2024-01-03|       300.0|       300|       300|
+----------+------------+---------+---------+

Time Series Data Analysis in Spark SQL

Time Series Data-এর Analysis করতে অনেক ধরনের স্ট্যাটিস্টিক্যাল এবং ম্যাথমেটিক্যাল অপারেশন প্রয়োগ করা যেতে পারে, যেমন ট্রেন্ড (Trend), সিজনালিটি (Seasonality), মুভিং এভারেজ (Moving Average) ইত্যাদি। Spark SQL এর মাধ্যমে এগুলি সহজেই বিশ্লেষণ করা সম্ভব।

Moving Average Calculation:

মুভিং এভারেজ (Moving Average) হলো একটি পরিসংখ্যানগত কৌশল যা সময়ের সাথে ডেটার সাম্প্রতিক প্রবণতা দেখতে সাহায্য করে। Spark SQL-এর window ফাংশন ব্যবহার করে সহজেই মুভিং এভারেজ বের করা যেতে পারে।

from pyspark.sql.window import Window
from pyspark.sql.functions import avg

# উইন্ডো সাপেক্ষে Moving Average বের করা
windowSpec = Window.orderBy("date").rowsBetween(-2, 0)  # 3 দিনের মুভিং এভারেজ

df_with_moving_avg = df.withColumn("moving_avg", avg("sales").over(windowSpec))

df_with_moving_avg.show()

এই কোডে, আমরা একটি উইন্ডো স্পেসিফিকেশন তৈরি করেছি যেখানে, প্রতি তিন দিন ধরে মুভিং এভারেজ বের করা হচ্ছে। এখানে, rowsBetween(-2, 0) দ্বারা বর্তমান দিন এবং এর আগের দুই দিনের বিক্রয়ের গড় বের করা হচ্ছে।

ফলাফল:

+----------+-----+------------------+
|      date|sales|        moving_avg|
+----------+-----+------------------+
|2024-01-01|  100|            100.00|
|2024-01-01|  150|            125.00|
|2024-01-02|  200|            150.00|
|2024-01-02|  250|            200.00|
|2024-01-03|  300|            250.00|
+----------+-----+------------------+

এখানে, মুভিং এভারেজ ক্যালকুলেশন দেখানো হয়েছে যেখানে গত তিন দিন ধরে বিক্রয়ের গড় বের করা হয়েছে।


Time Series Data Analysis with SQL

Time Series Data Analysis SQL কোয়ারি ব্যবহার করেও করা যায়। Spark SQL এ Time Series Data তে বিভিন্ন ধরনের ফাংশন ও অপারেশন প্রয়োগ করা সহজ।

# SQL Query মাধ্যমে Time Series Data Analysis
df.createOrReplaceTempView("sales_data")

# SQL কোয়ারি দিয়ে Date অনুযায়ী গড় বিক্রয় বের করা
result = spark.sql("""
    SELECT date, 
           AVG(sales) AS average_sales, 
           MAX(sales) AS max_sales, 
           MIN(sales) AS min_sales 
    FROM sales_data 
    GROUP BY date
    ORDER BY date
""")

result.show()

এখানে, SQL কোয়ারি ব্যবহার করে date অনুসারে গড়, সর্বোচ্চ, এবং সর্বনিম্ন বিক্রয় বের করা হয়েছে।


Time Series Data Analysis for Trend Detection

Time Series Data-তে ট্রেন্ড (Trend) শনাক্তকরণ একটি গুরুত্বপূর্ণ বিশ্লেষণ পদ্ধতি। এটি সময়ের সাথে ডেটার সাধারণ প্রবণতা চিহ্নিত করে, যেমন ধীরে ধীরে বৃদ্ধি বা হ্রাস।

Trend Detection with SQL

# SQL কোয়ারি ব্যবহার করে Time Series ট্রেন্ড ডিটেকশন
df.createOrReplaceTempView("sales_data")

trend_result = spark.sql("""
    SELECT date, 
           sales, 
           ROW_NUMBER() OVER (ORDER BY date) AS row_num 
    FROM sales_data
""")

trend_result.show()

এখানে, SQL ফাংশন ROW_NUMBER() ব্যবহার করে সিজনাল ট্রেন্ড দেখানো হচ্ছে, যা প্রতিটি রেকর্ডের জন্য একটি ইউনিক ক্রমফলক সংখ্যা তৈরি করে।


সারাংশ

Time Series Data Aggregation এবং Analysis এর মাধ্যমে আপনি Spark SQL ব্যবহার করে অনেক ধরনের পরিসংখ্যান বের করতে পারেন, যেমন average, max, min, moving average, এবং trend। Spark SQL এবং DataFrame API-এর মাধ্যমে সহজেই এই ডেটা বিশ্লেষণ এবং গঠনমূলক ফলাফল পাওয়া যায়। Time Series Data Analysis বিভিন্ন ক্ষেত্রে যেমন স্টক মার্কেট, আবহাওয়া পূর্বাভাস, বিক্রয় বিশ্লেষণ ইত্যাদিতে অত্যন্ত কার্যকরী।

Content added By
Promotion

Are you sure to start over?

Loading...